home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / IEditor / Generators / C / Config.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-06-17  |  8.9 KB  |  312 lines

  1. /*
  2.     C source code created by Interface Editor
  3.     Copyright © 1994-1996 by Simone Tellini
  4.  
  5.     Generator:  C_IE_Mod.generator 37.1 (29.4.96)
  6.  
  7.     Copy registered to :  Simone Tellini
  8.     Serial Number      : #0
  9. */
  10.  
  11. #include <exec/types.h>
  12. #include <exec/nodes.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/gadgetclass.h>
  15. #include <libraries/gadtools.h>
  16. #include <clib/exec_protos.h>
  17. #include <clib/intuition_protos.h>
  18. #include <clib/gadtools_protos.h>
  19. #include <clib/graphics_protos.h>
  20. #ifdef PRAGMAS
  21. #include <pragmas/exec_pragmas.h>
  22. #include <pragmas/intuition_pragmas.h>
  23. #include <pragmas/graphics_pragmas.h>
  24. #include <pragmas/gadtools_pragmas.h>
  25. #endif
  26. #include <ctype.h>
  27. #include <string.h>
  28.  
  29. #include "DEV_IE:Include/IEditor.h"
  30.  
  31. #include "Config.h"
  32.  
  33.  
  34. UWORD ConfGTypes[] = {
  35.     CHECKBOX_KIND,
  36.     CHECKBOX_KIND,
  37.     BUTTON_KIND,
  38.     BUTTON_KIND,
  39.     CHECKBOX_KIND,
  40.     CHECKBOX_KIND,
  41.     CHECKBOX_KIND,
  42.     CHECKBOX_KIND,
  43.     STRING_KIND,
  44.     CHECKBOX_KIND,
  45.     CHECKBOX_KIND,
  46.     STRING_KIND,
  47.     BUTTON_KIND,
  48.     BUTTON_KIND,
  49.     CHECKBOX_KIND,
  50.     STRING_KIND,
  51.     STRING_KIND,
  52.     CHECKBOX_KIND,
  53.     NULL };
  54.  
  55. struct TextAttr topaz8_065 = {
  56.     (STRPTR)"topaz.font", 8, 0x0, 0x41 };
  57.  
  58. struct NewGadget ConfNGad[] = {
  59.     133, 3, 26, 11, "Intui_Message", &topaz8_065, GD_Msg, NULL, NULL, (APTR)MsgClicked,
  60.     291, 3, 26, 11, "Clicked Pt_r", &topaz8_065, GD_Click, NULL, NULL, (APTR)ClickClicked,
  61.     7, 125, 94, 14, "_Use", &topaz8_065, GD_Use, NULL, NULL, (APTR)UseClicked,
  62.     241, 125, 94, 14, "_Cancel", &topaz8_065, GD_Canc, NULL, NULL, (APTR)CancClicked,
  63.     133, 15, 26, 11, "IDCMP _Handler", &topaz8_065, GD_Handler, NULL, NULL, (APTR)HandlerClicked,
  64.     291, 15, 26, 11, "_Key Handler", &topaz8_065, GD_KeyHandler, NULL, NULL, (APTR)KeyHandlerClicked,
  65.     133, 27, 26, 11, "_Template", &topaz8_065, GD_Template, NULL, NULL, (APTR)TemplateClicked,
  66.     291, 39, 26, 11, "To Lo_wer", &topaz8_065, GD_ToLower, NULL, NULL, (APTR)ToLowerClicked,
  67.     112, 65, 223, 13, "UW_ORD chip:", &topaz8_065, GD_Chip, PLACETEXT_LEFT, NULL, (APTR)ChipClicked,
  68.     133, 39, 26, 11, "Sm_art String", NULL, GD_SmartStr, NULL, NULL, (APTR)SmartStrClicked,
  69.     291, 27, 26, 11, "Only _New Tmp", NULL, GD_NewTmp, NULL, NULL, (APTR)NewTmpClicked,
  70.     112, 107, 202, 13, "Hea_ders:", &topaz8_065, GD_Headers, PLACETEXT_LEFT, NULL, (APTR)HeadersClicked,
  71.     316, 107, 19, 13, "R", NULL, GD_GetH, NULL, NULL, (APTR)GetHClicked,
  72.     124, 125, 94, 14, "_Save", &topaz8_065, GD_Save, NULL, NULL, (APTR)SaveClicked,
  73.     133, 51, 26, 11, "Us_e CatComp", NULL, GD_CatComp, NULL, NULL, (APTR)CatCompClicked,
  74.     112, 79, 223, 13, "HOOK_:", NULL, GD_Hook, NULL, NULL, (APTR)HookClicked,
  75.     112, 93, 223, 13, "Ax Re_gister:", NULL, GD_Reg, NULL, NULL, (APTR)RegClicked,
  76.     291, 51, 26, 11, "No Button K._P.", NULL, GD_NoKP, NULL, NULL, (APTR)NoKPClicked
  77. };
  78.  
  79. ULONG ConfGTags[] = {
  80.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  81.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  82.     (GT_Underscore), '_', (TAG_DONE),
  83.     (GT_Underscore), '_', (TAG_DONE),
  84.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  85.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  86.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  87.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  88.     (GT_Underscore), '_', (GTST_MaxChars), 24, (TAG_DONE),
  89.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  90.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  91.     (GT_Underscore), '_', (GTST_MaxChars), 256, (TAG_DONE),
  92.     (TAG_DONE),
  93.     (GT_Underscore), '_', (TAG_DONE),
  94.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE),
  95.     (GT_Underscore), '_', (GTST_MaxChars), 32, (TAG_DONE),
  96.     (GT_Underscore), '_', (GTST_MaxChars), 32, (TAG_DONE),
  97.     (GT_Underscore), '_', (GTCB_Scaled), TRUE, (TAG_DONE)
  98. };
  99.  
  100. UWORD ScaleX( UWORD FontX, UWORD value )
  101. {
  102.     return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  103. }
  104.  
  105. UWORD ScaleY( UWORD FontY, UWORD value )
  106. {
  107.     return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  108. }
  109.  
  110. void CloseWnd( struct Window **Wnd, struct Gadget **GList )
  111. {
  112.     if( *Wnd ) {
  113.         CloseWindow( *Wnd );
  114.         *Wnd = NULL;
  115.     }
  116.     if( GList ) {
  117.         FreeGadgets( *GList );
  118.         *GList = NULL;
  119.     }
  120. }
  121.  
  122. LONG OpenConfWindow( struct Window **Wnd, struct Gadget **GList, struct Gadget *Gadgets[], struct IE_Data *IE )
  123. {
  124.     LONG        ret_code = NULL;
  125.     UWORD        FontX, FontY;
  126.     struct TextAttr    *Font;
  127.  
  128.     Font = IE->ScreenData->Screen->Font;
  129.     FontY = IE->ScreenData->Screen->RastPort.Font->tf_YSize;
  130.     FontX = IE->ScreenData->Screen->RastPort.Font->tf_XSize;
  131.  
  132.     if((( ScaleX( FontX, 346 ) + IE->ScreenData->Screen->WBorRight + IE->ScreenData->XOffset ) > IE->ScreenData->Screen->Width ) ||
  133.         (( ScaleY( FontY, 141 ) + IE->ScreenData->Screen->WBorBottom + IE->ScreenData->YOffset ) > IE->ScreenData->Screen->Height )) {
  134.             Font = &topaz8_065;
  135.             FontX = FontY = 8;
  136.         }
  137.  
  138.     struct Gadget        *g;
  139.     UWORD            lc, tc;
  140.     struct NewGadget    ng;
  141.  
  142.     if(!( g = CreateContext( GList )))
  143.         return( 1L );
  144.  
  145.     for( lc = 0, tc = 0; lc < Conf_CNT; lc++ ) {
  146.  
  147.         CopyMem(( char * )&ConfNGad[ lc ], ( char * )&ng, ( long )sizeof( struct NewGadget ));
  148.         ng.ng_VisualInfo = IE->ScreenData->Visual;
  149.         ng.ng_TextAttr = Font;
  150.         ng.ng_LeftEdge = IE->ScreenData->XOffset + ScaleX( FontX, ng.ng_LeftEdge );
  151.         ng.ng_TopEdge  = IE->ScreenData->YOffset + ScaleY( FontY, ng.ng_TopEdge  );
  152.         ng.ng_Width    = ScaleX( FontX, ng.ng_Width  );
  153.         ng.ng_Height   = ScaleY( FontY, ng.ng_Height );
  154.         Gadgets[ lc ] = g = CreateGadgetA((ULONG)ConfGTypes[ lc ], g, &ng, (struct TagItem *)&ConfGTags[ tc ] );
  155.  
  156.         while( ConfGTags[ tc ] ) tc += 2;
  157.         tc++;
  158.  
  159.         if( !g )
  160.             return( 2L );
  161.     }
  162.  
  163.  
  164.     struct TagItem WTags[] = {
  165.         { WA_Left, 146 },
  166.         { WA_Top, 62 },
  167.         { WA_Width, ScaleX( FontX, 346 ) + IE->ScreenData->XOffset + IE->ScreenData->Screen->WBorRight },
  168.         { WA_Height, ScaleY( FontY, 141 ) + IE->ScreenData->YOffset + IE->ScreenData->Screen->WBorBottom },
  169.         { WA_MinWidth, 0 },
  170.         { WA_MaxWidth, -1 },
  171.         { WA_MinHeight, 0 },
  172.         { WA_MaxHeight, -1 },
  173.         { WA_PubScreen, IE->ScreenData->Screen },
  174.         { WA_Title, (ULONG)"C.generator Config" },
  175.         { WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE|WFLG_RMBTRAP },
  176.         { WA_IDCMP, BUTTONIDCMP|CHECKBOXIDCMP|STRINGIDCMP|IDCMP_REFRESHWINDOW|IDCMP_GADGETUP|IDCMP_VANILLAKEY },
  177.         { WA_Gadgets, *GList },
  178.         { TAG_DONE, NULL }
  179.     };
  180.  
  181.     WTags[ WT_LEFT ].ti_Data = (IE->ScreenData->Screen->Width  - WTags[ WT_WIDTH  ].ti_Data) >> 1;
  182.     WTags[ WT_TOP  ].ti_Data = (IE->ScreenData->Screen->Height - WTags[ WT_HEIGHT ].ti_Data) >> 1;
  183.  
  184.     if(!( *Wnd = OpenWindowTagList( NULL, &WTags[0] )))
  185.         return( 4L );
  186.  
  187.     GT_RefreshWindow( *Wnd, NULL );
  188.     return( 0L );
  189. }
  190.  
  191. LONG HandleConfIDCMP( struct Window *Wnd, struct Gadget *Gadgets[], struct IE_Data *IE )
  192. {
  193.     struct IntuiMessage    *m, Msg;
  194.     BOOL            (*func)( struct Window *, struct Gadget **, struct IE_Data *, struct IntuiMessage * );
  195.     BOOL            running = TRUE;
  196.     int            class;
  197.     short            code;
  198.     struct Gadget    *gad;
  199.  
  200.     while( m = GT_GetIMsg( Wnd->UserPort )) {
  201.  
  202.         class = m->Class;
  203.         code  = m->Code;
  204.         gad   = (struct Gadget *)m->IAddress;
  205.  
  206.         CopyMem((char *)m, (char *)&Msg, (long)sizeof( struct IntuiMessage ));
  207.  
  208.         GT_ReplyIMsg( m );
  209.  
  210.         switch( class ) {
  211.  
  212.             case    IDCMP_VANILLAKEY:
  213.                 running = HandleConfKeys( code, Wnd, Gadgets, IE, &Msg );
  214.                 break;
  215.  
  216.             case    IDCMP_REFRESHWINDOW:
  217.                 GT_BeginRefresh( Wnd );
  218.                 GT_EndRefresh( Wnd, TRUE );
  219.                 break;
  220.  
  221.             case    IDCMP_GADGETUP:
  222.                 func = gad->UserData;
  223.                 running = (*func)( Wnd, Gadgets, IE, &Msg );
  224.                 break;
  225.  
  226.         }
  227.     }
  228.     return( running );
  229. }
  230.  
  231. BOOL HandleConfKeys( UBYTE Code, struct Window *Wnd, struct Gadget *Gadgets[], struct IE_Data *IE, struct IntuiMessage *Msg )
  232. {
  233.     BOOL running = TRUE;
  234.  
  235.     switch( tolower( Code )) {
  236.  
  237.         case    'm':
  238.             running = MsgKeyPressed( Wnd, Gadgets, IE, Msg );
  239.             break;
  240.  
  241.         case    'r':
  242.             running = ClickKeyPressed( Wnd, Gadgets, IE, Msg );
  243.             break;
  244.  
  245.         case    'u':
  246.             running = UseKeyPressed( Wnd, Gadgets, IE, Msg );
  247.             break;
  248.  
  249.         case    'c':
  250.             running = CancKeyPressed( Wnd, Gadgets, IE, Msg );
  251.             break;
  252.  
  253.         case    'h':
  254.             running = HandlerKeyPressed( Wnd, Gadgets, IE, Msg );
  255.             break;
  256.  
  257.         case    'k':
  258.             running = KeyHandlerKeyPressed( Wnd, Gadgets, IE, Msg );
  259.             break;
  260.  
  261.         case    't':
  262.             running = TemplateKeyPressed( Wnd, Gadgets, IE, Msg );
  263.             break;
  264.  
  265.         case    'w':
  266.             running = ToLowerKeyPressed( Wnd, Gadgets, IE, Msg );
  267.             break;
  268.  
  269.         case    'o':
  270.             if(!( Gadgets[ GD_Chip ]->Flags & GFLG_DISABLED ))
  271.                 ActivateGadget( Gadgets[ GD_Chip ], Wnd, NULL );
  272.             break;
  273.  
  274.         case    'a':
  275.             running = SmartStrKeyPressed( Wnd, Gadgets, IE, Msg );
  276.             break;
  277.  
  278.         case    'n':
  279.             running = NewTmpKeyPressed( Wnd, Gadgets, IE, Msg );
  280.             break;
  281.  
  282.         case    'd':
  283.             if(!( Gadgets[ GD_Headers ]->Flags & GFLG_DISABLED ))
  284.                 ActivateGadget( Gadgets[ GD_Headers ], Wnd, NULL );
  285.             break;
  286.  
  287.         case    's':
  288.             running = SaveKeyPressed( Wnd, Gadgets, IE, Msg );
  289.             break;
  290.  
  291.         case    'e':
  292.             running = CatCompKeyPressed( Wnd, Gadgets, IE, Msg );
  293.             break;
  294.  
  295.         case    ':':
  296.             if(!( Gadgets[ GD_Hook ]->Flags & GFLG_DISABLED ))
  297.                 ActivateGadget( Gadgets[ GD_Hook ], Wnd, NULL );
  298.             break;
  299.  
  300.         case    'g':
  301.             if(!( Gadgets[ GD_Reg ]->Flags & GFLG_DISABLED ))
  302.                 ActivateGadget( Gadgets[ GD_Reg ], Wnd, NULL );
  303.             break;
  304.  
  305.         case    'p':
  306.             running = NoKPKeyPressed( Wnd, Gadgets, IE, Msg );
  307.             break;
  308.  
  309.     }
  310.     return( running );
  311. }
  312.